<?php

require_once 'SessionController.php';
if(!verificaLogin())return;
if(!verificaTorneo())return;

require_once '../../../../Utils/Conexion.php';

//VARIABLES DE CONTROL DEL LISTADO
$torneo = $_SESSION["torneo"];
$accion = (isset($_POST["accion"]))? $_POST["accion"]:"LISTAR";
$pagina = (isset($_POST["pagina"]))? $_POST["pagina"]:1;
$buscar = (isset($_POST["buscar"]))? $_POST["buscar"]:"";
$valor = (isset($_POST["valor"]))? $_POST["valor"]:"";

//CONTROL EVENTO SELECCIONADO
$evento = (isset($_SESSION['evento']))? $_SESSION['evento']:FALSE;
$filtro = (isset($_SESSION['filtro']))? $_SESSION['filtro']: "AUS";
$_SESSION['filtro'] = $filtro;



//ACCIONES
if ($accion === "GET_EVENTOS") {
    getEventos();
} else if ($accion === "CHANGE_EVENTO") {
    changeEvento($valor);
} else if ($accion === "GET_FILTROS") {
    getFiltros();
} else if ($accion === "CHANGE_FILTRO") {
    changeFiltro($valor);
} else if ($accion === "GET_TORNEO_NOMBRE") {
    getTorneoNombre();
} else if ($accion === "LISTAR") {
    listar();
}


function getTorneoNombre(){
    global $torneo;
    echo "<span class='glyphicon glyphicon-log-in'></span>&nbsp; ".$torneo['nombre'];
}


function changeEvento($id) {
    setEvento($id);
    listar();
}

function changeFiltro($valor) {
    setFiltro($valor);
    listar();
}


//SETEA EL EVENTO ACTUAL SELECCIONADO
function setEvento($id) {
    global $evento, $torneo;
    if($id) {
        $query = "SELECT id, nombre, habilita_concurso FROM poker_eventos 
                  WHERE poker_torneo_id = ".$torneo['id']." AND id = $id LIMIT 1";
        $r = consultar($query);
        if($r){
            $evento = $r[0];
            $_SESSION['evento'] = $evento;
        }
    } else {
        $evento = FALSE;
        unsetEvento();
    }
    
}


//SETEA EL FILTRO ACTUAL SELECCIONADO
function setFiltro($valor) {
    if ($valor) {
        $_SESSION['filtro'] = $valor;
        global $filtro;
        $filtro = $valor;
    }
}


function getFiltros() {
    global $filtro;
    $all = ($filtro == 'ALL')?"selected":"";
    $pre = ($filtro == 'PRE')?"selected":"";
    $aus = ($filtro == 'AUS')?"selected":"";
    echo "<option value='AUS' $aus>AUSENTES</option>";
    echo "<option value='PRE' $pre>PRESENTES</option>";
    echo "<option value='ALL' $all>TODOS</option>";
}


//LISTADO DE EVENTOS HABILITADOS PARA EL COMBO DE EVENTOS
function getEventos() {
    global $evento, $torneo;
    $q = "SELECT id, nombre, habilita_concurso FROM poker_eventos 
          WHERE poker_torneo_id = ".$torneo['id']." 
          ORDER BY habilita_concurso DESC, id ASC";
    $eventos = consultar($q);
    if ($eventos) {
        if (sizeof($eventos) > 0) {
            //VERIFICA SI ESTA EN EL LISTADO EL EVENTO ACTUAL
            if ($evento) {
                $existe = FALSE;
                foreach ($eventos as $e) {
                    if ($evento['id'] == $e['id']) {
                        $existe = TRUE;
                        break;
                    }
                }
                if (!$existe) setEvento(0);
            }
            //DIBUJA EL COMBO
            foreach ($eventos as $e) {
                if (!$evento) {
                    setEvento($e['id']);
                }
                $seleccionado = ($evento['id'] == $e['id'])? "selected":"";
                echo "<option value='".$e['id']."' $seleccionado >".$e['nombre']."</option>";
            }
        }
    } else {
        setEvento(0);
        echo "<option value='0'>TORNEO SIN EVENTOS</option>";
    }
}

//LISTADO
function listar() {
    global $evento, $filtro, $pagina, $buscar, $torneo;

    if (!$evento) {
        die("<div class='col-md-12 text-center'><h1 style='font-size:70px;'><br><br>Seleccione un Evento!!</h1></div>");
    }
    $registrosPorPagina = 10;
    $rangoPaginador = 5;
    $cantInicial = ($pagina - 1) * $registrosPorPagina;
    $cantFinal = $cantInicial + $registrosPorPagina;
    $nroInicial = $cantInicial + 1;
    $paginas = 0;
    $total = 0;
    $busqueda = "";
    $filtros = " AND pm.id IS NULL ";

    //ARMO CONSULTAS
    //FILTROS
    if ($filtro === "ALL") {
        $filtros = "";
    } else if ($filtro === "PRE") {
        $filtros = " AND pm.id IS NOT NULL ";
    }
    
    if ($evento['habilita_concurso']){
        $filtros .= " AND ps.estado!='ELIMINADO' AND ps.estado!='DESCALIFICADO' ";
    }

    //BUSQUEDA
    if (strlen($buscar) > 0) {
        $busqueda = "AND (p.documento LIKE '%$buscar%' OR p.apenom LIKE '%$buscar%' 
                         OR c.nombre LIKE '%$buscar%' OR p.telefono LIKE '%$buscar%' 
                         OR ps.mesa_numero LIKE '%$buscar%' OR ps.mesa_posicion LIKE '%$buscar%' 
                         OR p.id LIKE '%$buscar%' OR ps.codigo LIKE '%$buscar%') ";
    }

    $selectCant = "SELECT COUNT(p.id) AS cant ";
    $selectList = "SELECT IFNULL(ps.id,0) AS id, p.id AS persona_id, IFNULL(pm.id,0) as movimiento_id, 
                        p.documento AS documento, p.apenom AS apenom, p.telefono AS telefono, 
                        IFNULL(c.nombre,'SIN DEFINIR') AS ciudad , IFNULL(ps.mesa_numero,'-') AS mesa, 
                        IFNULL(ps.mesa_posicion,'-') AS posicion  ";

    $from = "FROM poker_specifics AS ps 
             LEFT JOIN personas AS p ON p.id = ps.persona_id AND ps.poker_torneo_id = ".$torneo['id']."  
             LEFT JOIN ciudades AS c ON c.id = p.ciudad_id 
             LEFT JOIN poker_movimientos AS pm ON pm.persona_id = ps.persona_id 
                        AND pm.oportunidad = ps.oportunidad AND pm.poker_evento_id = ".$evento['id']." ";
    $where = "WHERE p.inactivo IS FALSE $busqueda $filtros ";
    $order = "ORDER BY mesa_numero ASC, mesa_posicion ASC ";
    $limit = "LIMIT $cantInicial, $registrosPorPagina";

    $queryCantidad = $selectCant . $from . $where;
    $queryList = $selectList . $from . $where . $order . $limit;


    $respuesta = consultar($queryCantidad);
    if ($respuesta) {
        $total = $respuesta[0]['cant'];
        $paginas = ceil($total / $registrosPorPagina);
        if ($cantFinal > $total) {
            $cantFinal = $total;
        }
    }

    $personas = consultar($queryList);
    $ultimoIdPokerSpecific = FALSE;
    if ($personas) {
        echo "<table class='table table-striped table-hover '>
                    <thead>
                      <tr height='45px'>
                        <th class='text-center' style='width: 50px' ><span class='glyphicon glyphicon-log-in'></span></th>
                        <th class='text-center' style='width: 140px' >DOCUMENTO</th>
                        <th>NOMBRE Y APELLIDO</th>
                        <th class='text-center' >CIUDAD</th>
                        <th class='text-center' >TELEFONO</th>
                        <th class='text-center' >MESA</th>
                        <th class='text-center' >POSICION</th>
                        <th class='text-center' style='width: 160px'>ACCION</th>
                      </tr>
                    </thead>
                    <tbody>";
        foreach ($personas as $dato) {
            $ultimoIdPokerSpecific = $dato["id"];
            $registrar = "";
            $flag = "-";
            if ($dato['movimiento_id']) {
                $flag = "<span class='glyphicon glyphicon-ok text-success'></span>";
                $registrar = " disabled = 'disabled' ";
                $ultimoIdPokerSpecific = FALSE;
            }
            echo "<tr>
                        <td class='text-center'>$flag</td>
                        <td class='text-center'>" . $dato["documento"] . "</td>
                        <td class=''>" . $dato["apenom"] . "</td>
                        <td class='text-center'>" . $dato["ciudad"] . "</td>
                        <td class='text-center'>" . $dato["telefono"] . "</td>
                        <td class='text-center'>" . $dato["mesa"] . "</td>
                        <td class='text-center'>" . $dato["posicion"] . "</td>     
                        <td class='text-center'>
                            <button type='button' class='btn btn-success btn-sm' $registrar onclick='registrar(".$dato["id"].");' ><i class='glyphicon glyphicon-log-in'/>&nbsp; REGISTRAR</button>
                        </td>
                    </tr>";
        }
        echo "</tbody></table>
                    <nav class='navbar navbar-default navbar-fixed-bottom' role='navigation'>
                        <div class='container-fluid'>
                            <ul class='nav navbar-nav navbar-left'>
                                <p class='navbar-text'>Mostrando del $nroInicial al $cantFinal de $total registros</p>
                            </ul>";
        if ($paginas > 1) {
            $anterior = $pagina - 1;
            $siguiente = $pagina + 1;
            echo "<div class='navbar-right'>
                    <div class='btn-group'>";
            if ($pagina == 1) {
                echo "<button type='button' class='btn btn-default navbar-btn disabled' style='min-width:50px;' onclick='paginar(1)'>«</button>";
            } else {
                echo "<button type='button' class='btn btn-default navbar-btn' style='min-width:50px;' onclick='paginar(1)'>«</button>";
            }

            $rango = getRange($pagina, $paginas, $rangoPaginador);
            foreach ($rango as $r) {
                if ($r == $pagina) {
                    echo "<button type='button' class='btn btn-default navbar-btn active' style='min-width:50px;' onclick='paginar($r)'>$r</button>";
                } else {
                    echo "<button type='button' class='btn btn-default navbar-btn' style='min-width:50px;' onclick='paginar($r)'>$r</button>";
                }
            }

            if ($pagina < $paginas) {
                echo "<button type='button' class='btn btn-default navbar-btn' style='min-width:50px;' onclick='paginar($paginas)'>»</button>";
            } else {
                echo "<button type='button' class='btn btn-default navbar-btn disabled' style='min-width:50px;' onclick='paginar($paginas)'>»</button>";
            }
            echo"</div></div>";
        }
        echo "</div></nav>";
        if ($total == 1 && $buscar!="" && $ultimoIdPokerSpecific) {
            echo "<script type='text/javascript'> registrar($ultimoIdPokerSpecific); </script>";
        }
    } else {
        die("<div class='col-md-12 text-center'><h1 style='font-size:70px;'><br><br>No se Encontraron Registros!</h1></div>");
    }
}

function getRange($actual, $total, $cantidad) {
    $medio = floor($cantidad / 2);
    $ini = max($actual - $medio, 1);
    $fin = min($ini + $cantidad - 1, $total);
    if (($fin - $ini) < ($cantidad - 1)) {
        $ini = max($total - $cantidad + 1, 1);
    }
    return range($ini, $fin);
}
